<html>
<body>
Reports any chains of <code>if</code>-<code>else</code> statements all of whose conditions are <code>instanceof</code> expressions
or class equality expressions (e.g. comparison with <code>String.class</code>).
Such constructions usually indicate a failure in object-oriented design which
dictates that such type-based dispatch should be done via polymorphic method calls rather than explicit chains
of type tests.
<p>Example:</p>
<pre><code>
  double getArea(Shape shape) {
    // Warning: abstraction failure.
    // It would be better to declare a getArea()
    // abstract method in the shape interface
    // and implement it in every inheritor.
    if (shape instanceof Point) {
      return 0;
    }
    if (shape instanceof Circle) {
      return Math.PI *
        Math.pow(((Circle) shape).radius(), 2);
    }
    if (shape instanceof Rectangle) {
      return ((Rectangle) shape).width() *
        ((Rectangle) shape).height();
    }
    throw new IllegalArgumentException();
  }
</code></pre>
<!-- tooltip end -->
<p>
  Use the checkbox below to ignore <code>instanceof</code> expressions on library classes.
<p>

</body>
</html>